/** 模式信息  配置 */
export type PatternInfo = {
    type: number,                //游戏模式ID
    name: string,              //游戏模式标题
    json?: string,             //对应Json配置名字
    selectSpr?: string,           //模式选择时图片
    isNew?: boolean,          //该模式是否有新关
};
/** 关卡信息 配置 */
export type LvInfo = {
    lv: number,                 //关卡数
    type: number,
    name: string,               //关卡名字
    isNew?: boolean,             //是否新关
    isHot?: boolean,             //是否爆关
    display?: boolean,             //是否显示此关
    recommend?: boolean,             //是否是推荐关
};

/**推荐关卡信息 配置 */
export type PartnerInfos = {
    type: number,
    name: string,
    bundleNames: Array<string>
}


/** 声音配置信息 */
export type AudioInfo = {
    resUrl: string,       //音乐路径 或着名字
    value: number,           //声音大小
    isRepeat?: boolean,      //是否循环播放
    bgmValue?: number,       //播放音效时 背景音乐的音量
    isNotBundle?: boolean,       //音效是否来自非bundle
};
/** 找茬关卡配置 */
export type LvInter_2 = {
    lv: number,              //关卡数
    bgm: AudioInfo,           //背景音乐
    type?: number,                //类型
    People?: boolean,
    isWhether?: boolean,
    isChange?: boolean,       //是否切换
    changeNum?: number,       //图片数量
    keyNum: number,           //答案数量
    width?: number,
    height?: number,
    left?: number,
    right?: number,
    spacingx?: number,
    spacingy?: number,
    itemInfo: Array<{
        id: number,
        info: string,
        node: string,
        sprUrl: string,       //完成后对应图片路径
        yuanScale: any,       //画圈的大小
        setActive?: any,       //画圈的大小
        yuanRotation?: number,
    }>,
    InterArr?: Array<InterInfo>,    //交互配置
};

/** 消除关卡配置 */
export type LvInter_3 = {
    lv: number,              //关卡数
    type?: number,       //本关类型  1 歌词连线  2 热梗连线
    kaudio?: AudioInfo,     //本关是否有开始音效
    colorConfig: Array<string>,
    mapInfo: Array<Array<string>>,    //关卡字配置
    winInfo: Array<{                //右侧按钮信息
        info: string,   //信息
        audio?: AudioInfo,    //音效信息
    }>,
};

/** 台词消除关卡配置 */
export type LvInter_4 = {
    lv: number,              //关卡数
    type?: number,       //本关类型  1 歌词连线  2 热梗连线
    colorConfig: Array<string>,
    mapInfo: Array<Array<string>>,    //关卡字配置
    winInfo: Array<{                //右侧按钮信息
        info: string,   //信息
        audio?: AudioInfo,    //音效信息
    }>,
};

/** 第六关 配置 */
export type LvInter_6 = {
    lv: number,               //关卡数
    bgm?: AudioInfo,           //背景音乐
    keyNum: number,       //本关几个问题过关
    itemInfo: Array<{                //左侧按钮信息
        id: number,     //id  问题ID
        info: string,   //问题信息
        keyInfo: Array<string>,  //选项信息
        winKey: Array<string>,   //正确答案
    }>,
};
/** 第七关 配置 */
export type LvInter_7 = {
    lv: number,               //关卡数
    bgm?: AudioInfo,           //背景音乐
    keyInfo: string,       //答案
    leftInfo: Array<{                //左边信息
        id: number,     //id  
        info: string,   //问题信息
    }>,
    conInfo: Array<{                //中间信息
        id: number,     //id 
        info: string,   //问题信息
    }>,
    rightInfo: Array<{                //右边信息
        id: number,     //id 
        info: string,   //信息
    }>,
    errorInfo: Array<{                //错误信息
        info: string,     //id 
        errorInfo: string,   //信息
        spr?: string,
        sayPos?: any
    }>
};
/** 第八关 配置 */
export type LvInter_8 = {
    lv: number,               //关卡数
    type?: number,             //游戏类型
    width?: number,
    scale?: number,
    time?: number,
    spacingx?: number,
    spacingy?: number,
    centreInfo: Array<{
        id: number,
        info: string,
        audio?: AudioInfo,
        spr?: string,
    }>
};
/** 第九关配置 */
export type LvInter_9 = {
    lv: number,              //关卡数
    bgm: AudioInfo,           //背景音乐
    ziti: number,
    Height: number,
    SiYin?: string,
    DongJi?: string,
    XiongQi?: string,
    XiongShou?: string,
    victory: Array<{
        id: number,
    }>,
    Caseinfo: string,
    CaseinfoZiTi: number,
    CaseinfoHeight: number,
    AnJianXiangXi: string,
    AnJianY?: number,
    AnJianX?: number,
    itemInfo: Array<{
        title: string,
        type: number,
        id: number,
        sprUrl: string,       //完成后对应图片路径
        name?: string,
        relation?: string,
        confession?: string,
        info?: string,
        node: string,
        WenZi: number,
        WenHeight: number,
    }>,
    InterArr?: Array<InterInfo>,    //交互配置
};
/** 第十关 配置 */
export type LvInter_10 = {
    lv: number,               //关卡数
    bgm?: AudioInfo,           //背景音乐
    LunShu: number,
    keyInfo: number,       //答案
    geshu: number,
    cipai1: string,
    cipai2: string,
    zhiwei1: string,
    zhiwei2: string,
    information: Array<Array<
        {
            id: number,
            animation: any,
            isCont?: boolean,
            isanimation?: any,
        }
    >>,
    InterArr?: Array<InterInfo>,    //交互配置
};
/** 第十一关配置 */
export type LvInter_11 = {
    lv: number,              //关卡数
    bgm: AudioInfo,           //背景音乐
    largeScale?: number,
    smallScale?: number,
    type?: number,                //类型
    keyNum: number,           //答案数量
    width?: number,
    height?: number,
    left?: number,
    right?: number,
    spacingx?: number,
    spacingy?: number,
    itemInfo: Array<{
        id: number,
        info: string,
        name: string,
        sprUrl: string,       //完成后对应图片路径

    }>,
    InterArr?: Array<InterInfo>,    //交互配置
};
/** 第十三关配置 */
export type LvInter_13 = {
    lv: number,              //关卡数
    bgm?: AudioInfo,           //背景音乐
    type?: number,                //类型
    characterInfo: Array<{
        id: number,
        info: string,
    }>
    dramaInfo: Array<{                //右侧按钮信息
        id: number,    //id
        info: string,   //信息
    }>
    InterArr?: Array<InterInfo>,    //交互配置
};
/** 第十四关配置 */
export type LvInter_14 = {
    lv: number,              //关卡数
    bgm?: AudioInfo,           //背景音乐
    type?: number,                //类型
    downItems: Array<LvItemInfo_14>,   //下方物品交互
    sceneItems: Array<LvItemInfo_14>    //上方物品交互
    hideItems?: Array<number>    //初始化隐藏道具
    winStates?: Array<string>,   //胜利所需要的所有状态
    initStates?: Array<string>,  //游戏开始前拥有的状态
    InterArr?: Array<InterInfo>,    //交互配置
    InitArr?: Array<InitInfo>,    //初始化交互配置
};
export type LvItemInfo_14 = {    //十四关
    id: number,
    info: string,
    sprUrl: string,
    interArr: Array<{
        interNode: string,    //要碰撞的节点
        interTween?: string,   //要执行的Tween
        haveState?: Array<string>,   //触发所需要的前置状态条件
        addState?: Array<string>,    //触发后添加的状态
        removeState?: Array<string>, //触发后删除的状态
    }>
}
/** 第十五关配置 */
export type LvInter_15 = {
    lv: number,              //关卡数
    bgm?: AudioInfo,           //背景音乐
    type?: number,                //类型
    itemInfos: Array<LvItemInfo_15>,   //下方物品交互
    winStates?: Array<string>,   //胜利所需要的所有状态
    InterArr?: Array<InterInfo>,    //交互配置
    InitArr?: Array<InitInfo>,    //初始化交互配置
    talkInfos: Array<any>,    //要说的话配置
};
export type LvItemInfo_15 = {    //十五关
    node: string,
    allState?: Array<number>,   //所有得状态
    interArr: Array<{
        interNode?: string,    //要碰撞的节点
        click?: string,    //要碰撞的节点
        moveNode?: string,    //拖动过程中要碰撞的节点
        interTween?: string,   //要执行的Tween
        haveState?: Array<string>,   //触发所需要的前置状态条件
        addState?: Array<string>,    //触发后添加的状态
        removeState?: Array<string>, //触发后删除的状态
        haveNoState?: string, //触发所需要的前置状态条件
    }>
}





/** 物品初始化配置 */
export type InitInfo = {
    node: string,    // 物品节点
    initPos?: { x: number, y: number },    //初始坐标
    initWidth?: number,       //初始宽度  小于 1 为 屏幕百分比
    initHeight?: number,       //初始高度  小于 1 为 屏幕百分比

    interTween?: Array<TweenInfo>,
};
/** 物品交互配置 */
export type InterInfo = {
    node: string,    // 物品节点
    interType: string,    //交互类型  单击、双击等   
    isAllClick: boolean,     //交互期间 是否可点击其他物品
    interTween: Array<TweenInfo>,     //交互后动作
    interNode?: string,    //要交互的节点
    interValue?: any,    //交互配置的值
};
/** 配置的Tween信息 */
export type TweenInfo = {
    type: string,         //动画类型
    node?: string,        //执行该动画的节点   默认是自身
    time?: number,        //时间
    value: any,           //值
    timeScale?: number,    //播放速度
    pos?: any,          //坐标
};